package com.decent.manager.system.dao;

import com.decent.manager.system.dao.provider.SystemBrandDaoProvider;
import com.decent.manager.system.dto.SystemBrandDTO;
import com.decent.manager.system.vo.SystemBrandVO;
import org.apache.ibatis.annotations.*;

import java.util.List;

/**
 * @author: decent Gjh
 * @date: 2022/10/25/19:01
 * @description:
 */
@Mapper
public interface SystemBrandDao {
    /**
     * 插入品牌
     * @param brandDTO 品牌信息
     */
    @Insert("insert into common_brand (name,classify_id,sort,create_datetime) " +
            "values (#{brand.name},#{brand.classifyId},#{brand.sort},now()) ")
    void insert(@Param("brand") SystemBrandDTO brandDTO);

    /**
     * 根据id删除品牌
     * @param brandId 要删除的品牌id
     * @return 影响行数
     */
    @Delete("delete from common_brand where id = #{brandId}")
    int deleteBrand(@Param("brandId") int brandId);

    /**
     * 根据id修改品牌
     * @param brandDTO 品牌信息
     * @return 影响行数
     */
    @Update("update common_brand set name = #{brand.name}, classify_id = #{brand.classifyId}, " +
            "sort = #{brand.sort}, update_datetime = now() where id = #{brand.id}")
    int updateBrand(@Param("brand") SystemBrandDTO brandDTO);

    /**
     * 查询品牌
     * @param brandDTO 过滤信息
     * @return 品牌列表
     */
    @SelectProvider(type = SystemBrandDaoProvider.class, method = "list")
    List<SystemBrandVO> selectBrand(@Param("brand") SystemBrandDTO brandDTO);

    /**
     * 查询是否有对应id的品牌
     * @param id 品牌id
     * @return 品牌的数量
     */
    @Select("select count(*) from common_brand where id= #{id}")
    int existBrand(@Param("id") int id);

    /**
     * 根据分类id ，查询该分类下的品牌个数
     * @param classifyId 分类id
     * @return 品牌个数
     */
    @Select(" select count(*) from common_brand where classify_id = #{classifyId} ")
    int selectNumberByClassifyId(@Param("classifyId") int classifyId );

}
